/**
*	@class Buffer
*
*	@brief
*
*	@author William McVicar
*/

#pragma once

#ifndef __BUFFER_H_INCLUDED__
#define __BUFFER_H_INCLUDED__

//  Library Includes

//  Local Includes

//  Macros

//  Forward Declarations

//  Types

//  Constants

//  Prototypes
namespace Protein
{

class Buffer
{
	//Member Functions
public:

	virtual ~Buffer();

	inline i32                  NumElements() const;
	inline void                 NumElements( i32 _iNumElements );
	inline i32                  ElementSize() const;
	inline i32                  NumBytes() const;
	inline const c8*            Data() const;


protected: 

	Buffer();
	Buffer( i32 _iNumElements, i32 _iElemSize );


private: 

	//Member Variables
public:

protected: 

	i32		m_iNumElements;
	i32		m_iElementSize;
	i32		m_iNumBytes;
	c8*		m_pData;

private: 

};

#include "Buffer.inl"

}

#endif //__BUFFER_H_INCLUDED__
